/**
 * Created by Administrator on 2022/7/27.
 */
public class test {
    public static void main1(String[] args) {
        System.out.println("hello");
        System.out.println('a');
        System.out.println(10);
        System.out.println(3.14);
        System.out.println(true);
        System.out.println(false);
    }

    public static void main2(String[] args) {
        //在定义变量的时候，直接赋初始值
        int a = 10;//定义了一个整型变量a，初始值为10
        System.out.println(a);
        //在定义变量的时候没有赋初始值，在使用之前赋初值
        int b;
        b = 20;
        System.out.println(b);
        /*在使用之前要是都没有赋值，程序编译会直接报错
        int c;
        System.out.println(c);*/

        //int型变量所能表示的范围：
        //Integer.MAX_VALUE:表示int类型的最大值，Integer.MIN_VALUE:表示int类型的最小值
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);

    }

    public static void main3(String[] args) {
        long a = 10L;// 为了区分int和long类型，一般建议：long类型变量的初始值之后加L或者l
        System.out.println(a);
        //long型变量所能表示的范围：
        //Long.MAX_VALUE:表示long类型的最大值，Long.MIN_VALUE:表示long类型的最小值
        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);
    }

    public static void main4(String[] args) {
        short a = 10;
        System.out.println(a);
        System.out.println(Short.MAX_VALUE);
        System.out.println(Short.MIN_VALUE);
    }

    public static void main5(String[] args) {
        byte a = 10;
        System.out.println(a);
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);
    }

    public static void main6(String[] args) {
        double a = 3.14;
        System.out.println(a);
        System.out.println(1 / 2);//int 除以 int 的值仍然是 int(会直接舍弃小数部分)
        System.out.println(1.0/2);
        System.out.println(Double.MAX_VALUE);
        System.out.println(Double.MIN_VALUE);
    }

    public static void main7(String[] args) {
        float a = 3.14f;
        System.out.println(a);
        System.out.println(Float.MAX_VALUE);
        System.out.println(Float.MIN_VALUE);
    }

    public static void main8(String[] args) {
        char a = 'z';
        System.out.println(a);
        //char的封装类Character
    }

    public static void main9(String[] args) {
        boolean a = true;//. boolean 类型的变量只有两种取值, true 表示真, false 表示假.
        //Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法.
        System.out.println(a);
        boolean b = false;
        System.out.println(b);
        //boolean的包装类型为Boolean
    }

    public static void main10(String[] args) {
        int a = 10;
        long b = 20;
        b = a;
        System.out.println(b);
        //a = b;//error,long的范围比int范围大,会有数据丢失
        float c = 1.2f;
        double d = 1.5;
        d = c;
        System.out.println(d);
       // c = d;//error,double表示数据范围大，直接将float交给double会有数据丢失
        byte e = 100;
        System.out.println(e);
       // byte f = 257;//error,257超过了byte的数据范围，有数据丢失
    }

    public static void main11(String[] args) {
        int a = 10;
        long b = 20L;
        b = a;//int->long 小范围转大范围隐式类型转
        System.out.println("b:"+b);
        a = (int)b;//long->int,大范围转小范围需要强制类型转换，否则error
        System.out.println("a:"+a);
        double c = 3.14;
        a = (int)c;
        System.out.println(a);

        boolean z = true;
        //a = z;//error,类型不兼容
    }

    public static void main12(String[] args) {
        int a = 10;
        long b = 20;
       // int c = a + b;// 编译出错: a + b--> int + long--> long + long 赋值给int时会丢失数据
        byte x = 10;
        byte y = 20;
        //byte z = x + y;//error
       /* byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a
        和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.
        由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short
        这种低于 4 个字节的类型, 会先提升成 int, 再参与计算*/
       //正确写法：
        byte s =(byte)(x + y);
        System.out.println(s);
    }

    public static void main(String[] args) {
        String str1 = "hello";
        String str2 = "world";
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str1+str2);//str1+str2,表示把两个字符串连接到一起

        //int 转成 String：
        int num = 10;
        String s1 = num + "";//方法一
        System.out.println(s1);
        String s2 = String.valueOf(s1);//方法二
        System.out.println(s2);

        //String 转成 int
        String s = "100";
        int n = Integer.parseInt(s);
        System.out.println(n);
    }
}
